package commomgame;

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
import java.util.ArrayList;

/**
 * Classe representa as subregiões que irão compor as regiões.
 * Esta é responsável por conter o conjunto de cartas da subregião.
 * @author Fernanda & Igo
 */
public class SubRegion {

    /**
     *
     */
    public ArrayList<Card> setOfCard = new ArrayList<Card>();
    private int numberOfCards;
    private String name;

    /**
     * Retorna o nome da subregião
     * @return - string que representa o nome
     */
    public String getName() {
        return name;
    }

    /**
     * Define o nome da subregião
     * @param name String que define o nome
     */
    public void setName(String name) {
        this.name = name;
    }

    /**
     *
     */
    public void isAllowed() {
    }

    /**
     * Retorna uma determinada carta da subregião
     * @param value int que representa o valor da carta
     * @param nipe String que representa o nipe
     * @return objeto Card
     */
    public Card selectCard(int value, String nipe) {
        for (int i = 0; i < this.getSize(); i++) {
            if (this.setOfCard.get(i).getNipe().equals(nipe) && this.setOfCard.get(i).getValue() == value) {
                return this.setOfCard.get(i);
            }
        }
        return null;
    }

    /**
     * Adiciona car a subregião
     * @param card objeto Card a ser adicionado
     */
    public void addCardInSubRegion(Card card) {
        this.setOfCard.add(0, card);
    }

    /**
     * Adiciona carta a subregião depois de um movimento efetuado
     * @param card objeto Card a ser adicionado
     * @param subRegion subregião que deve ser adicionada
     */
    public void addCardsAfterMovement(Card card, SubRegion subRegion) {

        for (int i = subRegion.returnPositionOfCard(card); i >= 0; i--) {
            this.setOfCard.add(0, subRegion.setOfCard.get(i));
        }

    }

//    public int getNumberOfCards() {
//        return numberOfCards;
//    }
//
//    public void setNumberOfCards(int numberOfCards) {
//        this.numberOfCards = numberOfCards;
//    }
    /**
     * Retorna o conjunto de cartas da subregião
     * @return ArrayList de objetos Card
     */
    public ArrayList<Card> getSetOfCard() {
        return setOfCard;
    }

    /**
     * Retorna a posição de uma determinada carta dentro do ArrayList
     * @param card Objeto Card a ser verificado
     * @return
     */
    public int returnPositionOfCard(Card card) {

        return setOfCard.indexOf(card);

    }

    /**
     *Remover carta do ArrayList
     * @param card Objeto Card a ser removido
     */
    public void removeCard(Card card) {

        int ponteiro = 0;
        int positionOfCard = this.returnPositionOfCard(card);

        while (ponteiro <= positionOfCard) {
            this.setOfCard.remove(0);
            ponteiro++;
        }
    }

    /**
     * Retorna o nipe ta carta topo da subregião
     * @return String que representa o nipe
     */
    public String showNipeTopOfSubRegion() {
        return this.setOfCard.get(0).getNipe();
    }

    /**
     *Retorna o valor ta carta topo da subregião
     * @return int que representa o valor
     */
    public int showValueTopOfSubRegion() {

        return this.setOfCard.get(0).getValue();

    }

    /**
     * Retorna o tamanho do array de cartas
     * @return inteiro que representa o tamanho
     */
    public int getSize() {
        return this.setOfCard.size();
    }
}
